/**
 * koa中間件
 * 1. 決定是否向下執行，主動調用next才能往下走，做權限，統一攔截
 * 2. 默認可以在中間件中擴展屬性和方法，從上向下
 * 3. 分割邏輯，可以基於中間件封裝插件
 * 4. koa中所有的use中傳入的方法，都會包裝成promise
 * 5. next() 是一個promise，異步
 */

const Koa = require('koa');
const app = new Koa();

app.use(async function (ctx, next) {
  ctx.a = 1;
  await next();
});
app.use(async function (ctx, next) {
  console.log(ctx.a);
  await next();
});

app.listen(8989);
